package shm.capaDatos.vo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import shm.util.Utilidad;

public class DatosContactoVO implements Serializable {
	private static final long serialVersionUID = 1L;
	private Integer id; 
	private String nombre;
	private String paginaWeb;
	private String mail;
	private List<TelefonoVO> telefonos;
	private CiudadVO ciudad;
	private String direccion;
	private String codigoPostal;
	public DatosContactoVO(Integer id, String nombre, String paginaWeb, String mail,
			List<TelefonoVO> telefonos, CiudadVO ciudad, String direccion,
			String codigoPostal) {
		super();
		this.id = id;
		this.nombre = nombre;
		this.paginaWeb = paginaWeb;
		this.mail = mail;
		this.telefonos = telefonos;
		this.ciudad = ciudad;
		this.direccion = direccion;
		this.codigoPostal = codigoPostal;
	}
	
	public DatosContactoVO() {
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getPaginaWeb() {
		return paginaWeb;
	}
	public void setPaginaWeb(String paginaWeb) {
		this.paginaWeb = paginaWeb;
	}
	public String getMail() {
		return mail;
	}
	public void setMail(String mail) {
		this.mail = mail;
	}
	public List<TelefonoVO> getTelefonos() {
		return telefonos;
	}
	public void setTelefonos(List<TelefonoVO> telefonos) {
		this.telefonos = telefonos;
	}
	public CiudadVO getCiudad() {
		return ciudad;
	}
	public void setCiudad(CiudadVO ciudad) {
		this.ciudad = ciudad;
	}
	public String getDireccion() {
		return direccion;
	}
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public String getCodigoPostal() {
		return codigoPostal;
	}
	public void setCodigoPostal(String codigoPostal) {
		this.codigoPostal = codigoPostal;
	}
	public TelefonoVO obtenerTelefono(TelefonoVO telefono){
		Integer idTemporal = telefono.getIdTemporal();
		TelefonoVO telefonoS = null;
		Iterator<TelefonoVO> i = this.telefonos.iterator();
		while(i.hasNext() && telefonoS == null){
			telefonoS = i.next();
			if(telefonoS.getIdTemporal() == null){
				telefonoS = null;
			}else{
				if(!telefonoS.getIdTemporal().equals(idTemporal)){
					telefonoS = null;
				}
			}
		}
		return telefonoS;
	}
	public void agregarTelefono(TelefonoVO telefono){
		if(this.telefonos == null){
			this.telefonos = new ArrayList<TelefonoVO>();
		}
		telefono.setIdTemporal(obtenerIdTemporalSiguiente());
		
		this.telefonos.add(telefono);
	}
	private Integer obtenerIdTemporalSiguiente() {
		Iterator<TelefonoVO> itelefonos = this.telefonos.iterator();
		Integer idTMaximo = 0;
		while(itelefonos.hasNext()){
			Integer idT = itelefonos.next().getIdTemporal();
			if(idT>idTMaximo){
				idTMaximo = idT;
			}
		}
		return idTMaximo + 1;
	}

	public void eliminarTelefono(TelefonoVO telefono){
		if(this.telefonos != null){
			this.telefonos.remove(telefono);
		}
	}	
	public void modificarTelefono(TelefonoVO telefono){
		TelefonoVO telefonoActual = obtenerTelefono(telefono);
		this.telefonos.remove(telefonoActual);
		this.telefonos.add(telefono);
	}
	public boolean vacio(){
		if(Utilidad.textoConValor(this.nombre)){
			return false;
		}else{
			if(Utilidad.textoConValor(this.mail)){
				return false;
			}else{
				if(Utilidad.textoConValor(this.direccion)){
					return false;
				}else{
					if(Utilidad.textoConValor(this.codigoPostal)){
						return false;
					}else{
						if(Utilidad.textoConValor(this.paginaWeb)){
							return false;	
						}else{
							if(this.ciudad != null){
								return false;
							}else{
								if(this.telefonos != null){
									if(this.telefonos.isEmpty()){
										return true;
									}else{
										return false;
									}
								}else{
									return true;
								}
							}
						}
						
					}
				}		
			}
		}
	}

}
